package com.ayz.gateway.assist.config;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @ClassName GatewayServiceProperties
 * @Description TODO: 网关服务的配置参数
 * @Author 快乐的星球
 * @Date 2023/5/24 22:49
 * @Version 1.0
 **/
@ConfigurationProperties(prefix = "api.gateway")
@Setter
@Getter
public class GatewayServiceProperties {
    /**
     * 监听的端口号
     */
    private NettyProperties netty;
    /**
     * 网关名称
     */
    private String gatewayName;
    /**
     * 网关组的名称
     */
    private String gatewayGroup;
    /**
     * 网关的ID 唯一标识
     * 默认格式是 "gateway@ip@port"
     */
    private String gatewayId;
    /**
     * Rpc泛化调用的类型默认是 Dubbo
     */
    private String rpcType="Dubbo";
    /**
     * 网关注册中心配置参数
     */
    private CenterProperties center;

    /**
     * 宿主机的IP地址或者域名
     */
    private String host;

    private String rpcRegistryAddress="127.0.0.1:2181";
    /**
     * 网关注册中心的配置参数
     */
    @Getter
    @Setter
    public static class CenterProperties{
        /**
         * 网关注册中心的地址 格式 "ip1:port1,ip2:port2"
         */
        private String address;
    }

    /**
     * Netty网络通信参数
     */
    @Getter
    @Setter
    public static class NettyProperties{
        private int port=8080;//Netty Server监听的端口号
        private int bossThreads=1;//Netty boss组线程个数
        private int workerThreads=3;//Netty worker组线程个数
        private int backlog=1024;//会影响Socket的全连接队列和半连接队列的大小
        private boolean useEpollWhenLinux=true;//默认在Linux环境下使用Epoll
        private int ChannelMaxIdleTimeSeconds=120;//连接最大存活时间默认是120S
    }

}
